package com.jmp.base;

import com.jmp.base.dto.*;
import one.stand.model.ResultModel;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

public interface OrderApi {
    @PostMapping("order/save")
    ResultModel<OrderSaveVo> save(@RequestBody OrderSaveDto request);

    /**
     * 交易取消
     */
    @PostMapping("order/cancel")
    ResultModel cancel(@RequestBody OrderCancelDto request);

    /**
     * 确认收货
     */
    @PostMapping("order/complete")
    ResultModel complete(@RequestBody OrderCancelDto request);

    @PostMapping("order/save/again")
    ResultModel<OrderSaveVo> saveAgain(@RequestBody OrderSaveAgainDto request);

    @PostMapping("order/pay/wx/app")
    ResultModel<OrderPayWxAppVo> payWxApp(@RequestBody OrderPayWxAppDto request);

    @PostMapping("order/pay/wx/app/back")
    ResultModel payWxAppBack(@RequestBody OrderPayWxAppBackDto request);

    @PostMapping("order/pay/wx/jsapi")
    ResultModel<OrderPayWxJsapiVo> payWxJsapi(@RequestBody OrderPayWxJsapiDto request);

    @PostMapping("order/pay/wx/jsapi/back")
    ResultModel payWxJsapiBack(@RequestBody OrderPayWxAppBackDto request);

    @PostMapping("order/pay/alipay")
    ResultModel<OrderPayWxAlipayVo> payAlipay(@RequestBody OrderPayWxAlipayDto request);

    @PostMapping("order/pay/alipay/back")
    ResultModel payAlipayBack(@RequestBody OrderPayWxAlipayBackDto request);

    @PostMapping("order/send")
    ResultModel send(@RequestBody OrderSendRequest request);

    @PostMapping("order/list/pc")
    ResultModel<OrderListPcResponse> listPc(@RequestBody OrderListPcRequest request);

    @PostMapping("order/list")
    ResultModel<OrderListVo> list(@RequestBody OrderListDto request);

    @PostMapping("order/detail")
    ResultModel<OrderDetailVo> detail(@RequestBody OrderDetailDto request);

    @PostMapping("order/remind/send")
    ResultModel remindSend(@RequestBody OrderRemindSendDto request);

    @PostMapping("order/refund/apply")
    ResultModel refundApply(@RequestBody OrderRefundApplyDto request);

    @PostMapping("order/refund/cancel")
    ResultModel refundCancel(@RequestBody OrderRefundCancelDto request);

    @PostMapping("order/timeout")
    ResultModel timeout(@RequestBody OrderTimeoutDto request);

    @PostMapping("order/count")
    ResultModel<OrderCountVo> count(@RequestBody OrderCountDto request);

}
